package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main() {
	// 统计字符串长度，按字节进行统计
	var s1 string = "hello 你好"
	// 一个汉字占三个字节长度，编码方式是utf-8
	var c = len(s1)
	fmt.Println(c)

	// 字符串遍历：
	// 方式一 for range
	for i, v := range s1 {
		fmt.Printf("i:%d,value:%c\n", i, v)
	}
	// 方式二：转成切片,通过for循环来进行
	r := []rune(s1)
	for i := 0; i < len(r); i++ {
		fmt.Printf("%c\n", r[i])
	}

	// 字符串转正数
	var s2 string = "34"
	n, _ := strconv.Atoi(s2)
	fmt.Println("n：", n) //34 （int类型）

	// 正式转字符串
	var n2 int = 56
	s3 := strconv.Itoa(n2)
	fmt.Println("s3", s3) //56 (字符串类型)

	// 查找子串是否在指定的字符串中
	flag := strings.Contains("javaandgolang", "ga")
	fmt.Println(flag) //false

	// 统计一个字符串中有几个指定子串
	flag1 := strings.Count("javaandgolang", "g")
	fmt.Println(flag1) // 2

	// 不区分大小写的字符串比较
	flag2 := strings.EqualFold("go", "Go")
	fmt.Println(flag2) // true
	// 区分大小写：
	fmt.Println("hrg" == "Hrg") // false

	// 返回子串在字符串中第一次出现的索引值，如果没有返回-1
	n3 := strings.Index("hello golang", "llo")
	fmt.Println(n3) // 2

}
